import 'package:flutter/widgets.dart';

class ImageSettingsPageTranslation {
  static final delegate = _ImageSettingsPageTranslationDelegate();

  static ImageSettingsPageTranslation of(BuildContext context) {
    return Localizations.of(context, ImageSettingsPageTranslation);
  }

  late String _languageCode;

  Future<void> load(Locale locale) async {
    _languageCode = locale.languageCode;
  }

  String _resolve(Map<String, String> translations) {
    return translations[_languageCode]!;
  }

  String get title {
    return _resolve(const {
      'ru': 'Картинки',
      'en': 'Images',
    });
  }

  String get imageEnablementTileTitle {
    return _resolve(const {
      'ru': 'Картинки',
      'en': 'Images',
    });
  }

  String get byteAbbreviation {
    return _resolve(const {
      'ru': 'Б',
      'en': 'B',
    });
  }

  String get kilobyteAbbreviation {
    return _resolve(const {
      'ru': 'КБ',
      'en': 'KB',
    });
  }

  String get megabyteAbbreviation {
    return _resolve(const {
      'ru': 'МБ',
      'en': 'MB',
    });
  }

  String get gigabyteAbbreviation {
    return _resolve(const {
      'ru': 'ГБ',
      'en': 'GB',
    });
  }

  String get cacheClearanceTileTitle {
    return _resolve(const {
      'ru': 'Очистить кэш картинок',
      'en': 'Clear image cache',
    });
  }

  String get allImageDownloadTileGroupHeader {
    return _resolve(const {
      'ru': 'Оффлайн доступ к картинкам',
      'en': 'Offline access to images',
    });
  }

  String get allImageDownloadTileTitle {
    return _resolve(const {
      'ru': 'Скачать все картинки',
      'en': 'Download all images',
    });
  }

  String get allImageDownloadStopTileTitle {
    return _resolve(const {
      'ru': 'Остановить скачивание',
      'en': 'Stop downloading',
    });
  }

  String get allImageDownloadTileGroupFooter {
    return _resolve(const {
      'ru': 'Картинки скачиваются автоматически по мере необходимости. '
          'Ты также можешь скачать их самостоятельно.',
      'en': 'Images are downloaded automatically as needed. '
          'You can also download them yourself.',
    });
  }
}

class _ImageSettingsPageTranslationDelegate
    extends LocalizationsDelegate<ImageSettingsPageTranslation> {
  @override
  bool isSupported(Locale locale) => const ['ru', 'en'].contains(locale.languageCode);

  @override
  bool shouldReload(LocalizationsDelegate<ImageSettingsPageTranslation> old) => false;

  @override
  Future<ImageSettingsPageTranslation> load(Locale locale) async {
    final translation = ImageSettingsPageTranslation();
    await translation.load(locale);
    return translation;
  }
}
